﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
namespace Hotel.ThongKe
{
    public partial class ThongKePhong : Form
    {
        private SqlConnection conn = new SqlConnection(
               "Server=localhost;DataBase=Hotel;Integrated Security=SSPI");
        private HotelDataSet ds = new HotelDataSet();
        private SqlDataAdapter da;
        private SqlDataReader dr = null;
        SqlCommand cmd = null;
        double tongsophong;
        double sophongdango;
        double sophongdangsua;
        double sophongtrong;
        double ngay_1;
        double ngay_2;
        double thang_1;
        double thang_2;
        double nam_1;
        double nam_2;
        double luongdatphong;
        string sql = null;
        
         

        public ThongKePhong()
        {
            InitializeComponent();
        }

        private void tbnThoat_Click(object sender, EventArgs e)
        {
            this.Dispose();
        }

        String ngayden, ngaydi;
        private void btnThongke_Click(object sender, EventArgs e)
        {
            if (dtpNgaybatdau.Value > DateTime.Now || dtpNgaytinh.Value > DateTime.Now || dtpNgaybatdau.Value > dtpNgaytinh.Value)
                MessageBox.Show("Chọn ngày thống kê không phù hợp!");
            else
            {
                ngay_1 = Convert.ToDouble(Convert.ToString(dtpNgaybatdau.Value.Date.Day));
                thang_1 = Convert.ToDouble(Convert.ToString(dtpNgaybatdau.Value.Date.Month));
                nam_1 = Convert.ToDouble(Convert.ToString(dtpNgaybatdau.Value.Date.Year));
                ngayden = ngay_1 + "/" + thang_1 + "/" + nam_1;

                ngay_2 = Convert.ToDouble(Convert.ToString(dtpNgaytinh.Value.Date.Day));
                thang_2 = Convert.ToDouble(Convert.ToString(dtpNgaytinh.Value.Date.Month));
                nam_2 = Convert.ToDouble(Convert.ToString(dtpNgaytinh.Value.Date.Year));
                ngaydi = ngay_2 + "/" + thang_2 + "/" + nam_2;

                sql = "select   MaPhong from Phong";

                tongsophong = Count(sql);
                
                //Tổng số lượt đặt phòng
                sql = "select MaPhong from PhongLuuTru where(DaXoa='0' and(convert(datetime,NgayDat,103) between convert(datetime,'" + ngayden + "',103) and convert(datetime,'" + ngaydi + "',103)))";
                luongdatphong = Count(sql);
                lbTongsoluotdatphong.Text = Convert.ToString(luongdatphong);
                
                //Tổng số phòng đang cho thuê 
                
                sql = "select MaPhong from Phong where TinhTrang='1'";
                sophongdango = Count(sql);
                lbSophongdangsd.Text = Convert.ToString(sophongdango);
                txt1.Text = Convert.ToString((sophongdango / tongsophong) * 100 + " %");

                //số phòng còn trống
                sophongtrong = 0;
                sql = "select MaPhong from Phong where TinhTrang='0'";
                //sql = "select distinct (Phong.MaPhong) from Phong,PhongLuuTru where Phong.TinhTrang='0' and (convert(datetime,PhongLuuTru.NgayDat,103) between convert(datetime,'" + ngayden + "',103) and convert(datetime,'" + ngaydi + "',103)";
                sophongtrong = Count(sql);
                lbSophongtrong.Text = Convert.ToString(sophongtrong);
                txt2.Text = Convert.ToString((sophongtrong / tongsophong) * 100 + " %");

                //số phòng đang được sửa chữa
                sql = "select MaPhong from Phong where TinhTrang='2'";

                sophongdangsua = Count(sql);
                lbSophongdangsua.Text = Convert.ToString(sophongdangsua);
                txt3.Text = Convert.ToString((sophongdangsua / tongsophong) * 100 + " %");

            }
        }
        public int Count(string sql)
        {
            int count = 0;
            try
            {
                conn.Open();
                cmd = new SqlCommand(sql, conn);
                dr = cmd.ExecuteReader();
                while (dr.Read())
                {
                    count++;
                }
            }
            catch
            {

            }
            finally
            {
                if (dr != null)
                {
                    dr.Close();
                }
                if (conn != null)
                {
                    conn.Close();
                }
            }
            return count;
        }
        private void btnXuat_Click(object sender, EventArgs e)
        {
            new ReportThongKePhong(sophongdango.ToString(), sophongtrong.ToString(), sophongdangsua.ToString(), txt1.Text, txt2.Text, txt3.Text, ngayden, ngaydi, luongdatphong.ToString()).Show();
        }

    }
}
